<template>
	<view>
		<view class="" @click="test">点击</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				timeout: 30000, // 30s
				timeoutObj: null
			};
		},
		onLoad() {
			// .判断是否已连接
			this.checkOpenSocket();
		},
		methods: {
			// 判断是否已连接
			checkOpenSocket() {
				uni.sendSocketMessage({
					data: 'ping',
					success: res => {
						return;
					},
					fail: err => {
						// 未连接打开websocket连接
						this.openConnection();
					}
				});
			},
			openConnection() {
				// 打开连接
				// uni.closeSocket(); // 确保已经关闭后再重新打开
				uni.connectSocket({
					url: 'wss://yhz.axu9.com/wss',
					success(res) {
						console.log('连接成功 connectSocket=', res);
					},
					fail(err) {
						console.log('连接失败 connectSocket=', err);
					}
				});
				uni.onSocketOpen(res => {
					console.log('连接成功');
				});
				this.onSocketMessage(); // 打开成功监听服务器返回的消息
			},
			//	打开成功监听服务器返回的消息
			onSocketMessage() {
				// 消息
				this.timeout = 30000;
				this.timeoutObj = null;
				uni.onSocketMessage(res => {
					console.log(res)
					this.getSocketMsg(res.data); // 监听到有新服务器消息
				});
			},
			// 监听到有新服务器消息
			getSocketMsg(reData) {
				// 监听到服务器消息
				console.log('收到服务器消息', reData);
				this.reset();  // 检测心跳reset,防止长时间连接导致连接关闭
			},
			// 检测心跳reset
			reset() {
				clearInterval(this.timeoutObj);
				this.start(); // 启动心跳
			},
			// 启动心跳 start
			start() {
				this.timeoutObj = setInterval(function() {
					uni.sendSocketMessage({
						data: 'ping',
						success: res => {
							console.log('连接中....');
						},
						fail: err => {
							console.log('连接失败重新连接....');
							this.openConnection();
						}
					});
				}, this.timeout);
			}
		}
	};
	// export default {
	// 	data() {
	// 		return {
	// 			webSocketTask: null
	// 		}
	// 	},
	// 	onLoad() {
	// 		this.socket()
	// 	},
	// 	onShow() {
	// 		// 接收websocket消息及处理
	// 		this.webSocketTask.onMessage((res) => {
	// 			let data = JSON.parse(res.data);
	// 			console.log(data, 'data')
	// 			this.webSocketTask.send({
	// 				data: JSON.stringify({
	// 					type: 'pong'
	// 				})
	// 			});
	// 			// switch (data.type) {
	// 			// 	// 服务端ping客户端
	// 			// 	case 'ping':
	// 			// 		this.webSocketTask.send({
	// 			// 			data: JSON.stringify({
	// 			// 				type: 'pong'
	// 			// 			})
	// 			// 		});
	// 			// 		break;
	// 			// 		// 登录 更新用户列表
	// 			// 	case 'init':
	// 			// 		uni.setStorageSync('client_id', data.client_id);
	// 			// 		this.$u.post('接口', {
	// 			// 			client_id: data.client_id,
	// 			// 			user_id: this.userId
	// 			// 		}).then(res => {
	// 			// 			this.webSocketTask.send({
	// 			// 				data: JSON.stringify({
	// 			// 					type: 'bindUid',
	// 			// 					user_id: this.userId
	// 			// 				})
	// 			// 			});
	// 			// 		});
	// 			// 		break;
	// 			// 	case 'simple':
	// 			// 		this.userList.push(data.data)
	// 			// 		this.scrollToBottom()
	// 			// 		break;
	// 			// 	case 'group':
	// 			// 		// this.groupMenuList()
	// 			// 		this.userList.push(data.data)
	// 			// 		this.scrollToBottom()
	// 			// 		break
	// 			// }

	// 		});
	// 	},

	// 	onUnload() {
	// 		uni.closeSocket({
	// 			success: () => {
	// 				console.info("退出成功")
	// 			},
	// 		})
	// 	},

	// 	methods: {
	// 		test() {
	// 			console.log(this.webSocketTask, 'this.webSocketTask')
	// 			// {device_num:"868739050240336",msg:"aa552020120100201"}
	// 			this.webSocketTask.onMessage((res) => {
	// 				let data = JSON.parse(res.data);
	// 				console.log(data, 'data')
	// 				this.webSocketTask.send({
	// 					data: JSON.stringify({
	// 						device_num: "868739050240336",
	// 						msg: "aa552020120100201"
	// 					})
	// 				});
				
	// 			});
				
	// 		},
	// 		socket() {
	// 			//创建webSocket
	// 			this.webSocketTask = uni.connectSocket({
	// 				url: 'wss://yhz.axu9.com/wss',
	// 				header: {
	// 					'content-type': 'application/json'
	// 				},
	// 				success(res) {
	// 					console.log('成功', res);
	// 				},
	// 			})

	// 			// 监听WebSocket连接打开事件
	// 			this.webSocketTask.onOpen((res) => {
	// 				console.info("监听WebSocket连接打开事件", res)
	// 			});

	// 			// 监听WebSocket错误
	// 			uni.onSocketError((res) => {
	// 				console.info("监听WebSocket错误" + res)
	// 			});
	// 		}

	// 	},

	// }

</script>

<style>

</style>